#WKWebView 使用详解
##前言
WKWebView是在Apple的WWDC 2014发布,将原有UIWebViewDelegate与UIWebView重构成了14类与3个协议。
WKWebView,在iOS8和OS X 10.10开始支持,是为了解决UIWebView加载速度慢、占用内存大的问题。
在使用UIWebView加载网页的时候,会出现内存会无限增长,内存泄漏的问题。
WebKit中WKWebView控件的特性与使用方法,很好的解决了UIWebView存在的内存、加载速度等诸多问题。
一、WKWebView 特性
- 占用更少的内存
- Safari相同的JavaScript引擎
- 支持了更多的HTML5特性;
- 支持手势返回
- 滚动刷新率可达到60fps,堪比native
##webkit
##OC与JS交互
WKWebview提供了API实现js交互 不需要借助JavaScriptCore或者webJavaScriptBridge。
###WKWebView
WKWebView对象显示交互式Web内容,例如针对应用内浏览器。 您可以使用WKWebView类将Web内容嵌入到您的应用程序中。 只需要创建一个WKWebView对象,并向其发送加载Web内容的请求。
API
初始化
1 | - (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration |
常用方法
1 | - (nullable WKNavigation *)loadRequest:(NSURLRequest *)request; |
###WKNavigtionDelegate
1 | // 页面开始加载时调用 |
###WKUIDelegate
1 | //1.创建一个新的WebVeiw |
JS调用OC
使用WKUserContentController实现js=>native交互。简单的说就是先注册约定好的方法,然后再调用。
流程图:
1 | op=>operation: 配置环境 |
代码:
1 | //配置环境,使用WKWebViewConfiguration |
JS回调处理
1 | //WTWebViewJSBridge.m |
##详细Demo地址